/* 讲解c语言<指针数组>的模块 */

#include <stdio.h>

/*数组指针*/
void pointer_array()
{
    /* 和普通数组类似,但存储地址
     * 格式:
     * type *name[length] = { number, number, ...}
     * 注意: 指针计算以 bit 为单位
     */
    int array[5] = { 5, 10, 15, 20, 25 };
    int *pointer[5] = { &array[0], &array[1], &array[2], &array[3], &array[4], };
    for (int i = 0; i <= 4; i+=1) {
        printf("pointer[%d] 地址: %p, 值: %d \n", i, (void *)pointer[i], *pointer[i]);
    }
}

/*字符指针*/
void pointer_char()
{
    /* 可存储<字符串>与<地址>的指针
     * 注意:
     * 字符串末尾包含 '\0' 字符,会占用 1 长度
     * 截止到 c23 标准,能存入指针的字面量仅有字符串
     */
    char *string = "Hello";
    printf("字符串: %s, 地址: %p \n", string, (void *)string);
}

int main()
{
    pointer_array();
}
